/**
 *编写一个程序,最多将10个donation值读入到一个double数组中(如果您愿意,也可以使用模板类array)
 *程序遇到非数字输入时将结束输入,并报告这些数字的平均值以及数组中有多少个数字大于平均值
 **/
#include<iostream>
#include<array>
#include<sstream>
const int Max = 10;
int main()
{
    using namespace std;

    double sum = 0.0;       //初始化捐赠总计
    double ave = 0.0;       //初始化平均值
    int donationCount=0;    //初始化捐款次数统计
    array <double,Max>Num{};    //初始化double类型的捐款array数组

    cout << "Please Enter The Value Of Array_Num" <<endl;

    string input;           //输入流
    // 当donationCount小于最大donation数量MAX_DONATIONS，并且从标准输入成功读取一行时，执行循环体
    while(donationCount <Max && getline(cin,input))
    {
        // 创建一个输入字符串流，用于从input字符串中读取数据
        istringstream iss(input);
        double donation;

        // 尝试从输入字符串流iss中读取一个double类型的值到donation变量中
        if(!(iss>>donation)) // 如果读取失败（即输入的不是一个有效的数字），则跳出循环
            break;  //非数字输入则退出循环
        Num[donationCount] = donation;
        sum+=donation;
        donationCount++;
    }

    if(donationCount == 0)
    {
        cout << "No donations entered." << endl;
        return 0;
    }

    //计算平均值
    ave = sum/donationCount;
    int s =0;//初始化超过平均值的计数器
    for(int i = 0; i < donationCount;++i)
    {
        if(Num[i]>ave)
            s++;
    }

    cout << "There are total of "<< donationCount <<" donationsthis time, SUM = "<<sum<< " ;AVE = " << ave <<" ;and there are "<< s << " donations exceeded the average value.";
}
